# BSE

This page gives hints on how to perform a Bethe-Salpeter calculation of neutral excitation energies and dielectric function with the ABINIT package.

## Introduction¶

Many-Body Perturbation Theory (MBPT [Onida2002]) defines a rigorous framework for the description of excited-state properties based on the Green’s function formalism. Within MBPT, one can calculate charged excitations (i.e. electron addition and removal energies), using for example Hedin’s GW approximation [Hedin1965] for the electron self-energy. In the same framework, neutral excitations (experimentally related to optical absorption spectra) are also well described through the solution of the Bethe-Salpeter equation (BSE [Onida2002],[Albrecht1998]). At present, the BSE represents the most accurate approach for the ab initio study of neutral excitations in crystalline systems as it includes the attractive interaction between electrons and holes thus going beyond the random-phase approximation (RPA) employed in the GW approximation.

The BSE implementation in ABINIT is discussed in the review article [Giantomassi2011].

BSE calculations are activated by setting optdriver= 99. The number of valence and conduction states in the e-h basis set is controlled by the variables bs_loband and nband, respectively. By default, the code solves the BSE in the so-called Tamm-Dancoff approximation (TDA) in which the coupling between resonant and anti-resonant transitions is ignored. A full BSE calculation including the coupling term can be done by setting bs_coupling= 1 in the input file. The variable bs_coulomb_term specifies the treatment of the screened interaction in the BSE kernel. By default, the code reads the W matrix from the SCR file generated by the GW code (optdriver= 3). Alternatively, one can model the spatial dependency of W with the model dielectric function proposed by Cappellini [Cappellini1993]. This option requires the specification of bs_coulomb_term= 21 and mdf_epsinf. The contribution due to the exchange term can be optionally excluded by using bs_exchange_term= 0. This is equivalent to computing the macroscopic dielectric function without local field effects. The frequency mesh for the macroscopic dielectric function is specified by bs_freq_mesh while zcut defines the complex shift to avoid the divergences due to the presence of poles along the real axis (from a physical standpoint, this parameter is related to the electron lifetimes). In addition, a scissor operator of energy mbpt_sciss can be used to correct the initial band energies and mimic the opening of the KS gap introduced by the GW approximation.

Three different algorithms for the solution of the BSE are implemented:

- (1) Direct diagonalization,
- (2) Haydock recursive algorithm,
- (3) Conjugate gradient eigensolver.

The bs_algorithm input variable allows the user to choose among them. The Haydock algorithm [Haydock1980],[Benedict1998] is the recommended approach for the computation of optical spectra. The variables bs_haydock_niter and bs_haydock_tol control the Haydock iterative method.

Unfortunately, the Haydock solver does not give direct access to the eigenstates of the Hamiltonian, hence it cannot be used for the study of the excitonic wavefunctions. The conjugate gradient (CG) method employs standard iterative techniques [Payne1992] to compute the lowest eigenstates of the BSE Hamiltonian. This solver is more memory demanding than the Haydock approach since the eigenstates must be stored in memory, but it gives direct access to the excitonic states.

The CG algorithm should be preferred over the direct diagonalization especially when the number of eigenstates is much smaller than the size of the BSE Hamiltonian.

Note, however, that CG has been implemented only for TDA calculations (Hermitian matrices).

The most important results of the calculation are saved in five different files. The BSR file stores the upper triangle of the BSE resonant block in Fortran binary format (BSC for the coupling matrix). The HAYDR_SAVE file contains the coefficients of the tridiagonal matrix and the three vectors employed in the iterative algorithm. This file can be used to restart the calculation if convergence has not been achieved (related input variables gethaydock and irdhaydock). Finally, the macroscopic dielectric function with excitonic effects is reported in the EXC_MDF file while RPA_NLF_MDF and GW_NLF_MDF contain the RPA spectrum without local field effects obtained with KS energies and the GW energies, respectively.

Different schemes with different degrees of accuracy and computational load
are available in ABINIT [Gillet2016] in order to improve the
convergence rate of BSE calculations. They are are available in ABINITv8 with
the `bs_interp_*`

input variables.

In the non-spin-polarized case, spin-singlet as well as spin-triplet excitations are computed. Spin-polarized case is also available.

## Related Input Variables¶

*compulsory:*

*basic:*

- bs_algorithm Bethe-Salpeter ALGORITHM
- bs_freq_mesh Bethe-Salpeter FREQuency MESH
- bs_interp_mode Bethe-Salpeter INTERPolation MODE
- bs_nstates Bethe-Salpeter Number of STATES

*useful:*

- bs_coupling Bethe-Salpeter COUPLING
- bs_interp_kmult Bethe-Salpeter INTERPolation K-point MULTiplication factors
- bs_interp_m3_width Bethe-Salpeter INTERPolation Method3 WIDTH
- bs_interp_method Bethe-Salpeter INTERPolation METHOD
- bs_interp_prep Bethe-Salpeter INTERPolation PREParation
- bs_interp_rl_nb Bethe-Salpeter INTERPolation Rohlfing & Louie NeighBour
- irdbscoup Integer that governs the ReaDing of COUPling block
- irdbseig Integer that governs the ReaDing of BS_EIG file
- irdbsreso Integer that governs the ReaDing of RESOnant block
- irdhaydock Integer that governs the ReaDing of the HAYDOCK restart file
- mdf_epsinf Model Dielectric Function, EPSilon INFinity

*expert:*

- bs_calctype Bethe-Salpeter CALCulation TYPE
- bs_coulomb_term Bethe-Salpeter COULOMB TERM
- bs_eh_cutoff Bethe-Salpeter Electron-Hole CUTOFF
- bs_exchange_term Bethe-Salpeter EXCHANGE TERM
- bs_hayd_term Bethe-Salpeter HAYdock TERMinator
- bs_haydock_niter Bethe-Salpeter HAYDOCK Number of ITERations
- bs_haydock_tol Bethe-Salpeter HAYDOCK TOLerance
- gw_nqlwl GW, Number of Q-points for the Long Wave-Length Limit
- gw_qlwl GW, Q-points for the Long Wave-Length limit
- inclvkb INCLude VKB
- pawoptosc PAW - OPTion for the computation of the OSCillator matrix elements
- zcut Z-CUT

## Selected Input Files¶

*paral:*

*v67mbpt:*

- tests/v67mbpt/Input/t11.in
- tests/v67mbpt/Input/t14.in
- tests/v67mbpt/Input/t15.in
- tests/v67mbpt/Input/t16.in
- tests/v67mbpt/Input/t29.in
- tests/v67mbpt/Input/t31.in
- tests/v67mbpt/Input/t32.in
- tests/v67mbpt/Input/t33.in
- tests/v67mbpt/Input/t34.in
- tests/v67mbpt/Input/t35.in

## Tutorials¶

- The bse tutorial tutorial on the Bethe-Salpeter Equation (BSE) deals with the computation of the macroscopic dielectric function of Silicon within the Bethe-Salpeter equation.